iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Software Development

你知道Go是什麼嗎?系列 第 3

Day3 - 變數 - Golang

  • 分享至 

  • xImage
  •  

第三天了,今天沒有圖可以放,難過,今天就如題介紹變數吧。

宣告變數

Go的變數宣告格式與常見的語言比較不同,宣告方式如下:

正常宣告

var [名稱][類別]

var a int
var b string
var c float64
var flag bool
var array []string

多重宣告

var a,b,c int

var(
    a int
    b string
    c float64
)

宣告時賦值

func main() {
    var name string = "MingZhe"
    var (
        height int = 170
    	weight int = 75
    )
    fmt.Println(name, "information:")
    fmt.Println("height:", height, "cm")
    fmt.Println("weight:", weight: "kg")
}

輸出:

MingZhe info:
Height: 170 cm
Weight: 75 kg

短宣告(short declaration)

最常使用的宣告方式,只能在function中使用,宣告出的變數屬於區域變數

function main() {
    foo := "Hello"
    bar := 100

  // 也可以簡寫成
  foo, bar := "Hello", 100
}

會發現這種宣告方式時沒有一併宣告型態,使因為Go本身有型別推導功能,因此宣告時也可省略型態

型別推導:
若沒有指定資料型別,編譯器會根據賦值自動推匯出確定的資料型別

多重賦值

Go本身有內建多重賦值,在做變數交換時可以不用宣告temp

a := 1
b := 2

a, b = b, a
// a = 2
// b = 1

匿名佔位符(anonymous placeholder)

可使用「_」佔位置,省略掉不需要的資料,使用方式如下

func test() (string, string) {
    return "X", "Y"
}
func main() {
    var a, _ = test() //只取得第一個回傳變數,忽略第二個回傳的變數
    fmt.Println(a) //X
}

一開始不是很懂這個的概念,但習慣了之後發現滿好用的ˊˇˋ

常數宣告

常數是指在開發或編譯期間就定義好的值,在執行期間不能被修改。

Go語言中的常量使用關鍵字 const 定義,用於存儲不會改變的數據,常量是在編譯時被創建的,即使定義在函數內部也是如此,並且只能是bool、數字型(intfloatcomplex)和string

宣告

// 單一宣告
const pi = 3.141592
const e = 2.718281

// 多重宣告 
const (
    pi = 3.141592
    e = 2.718281
)

宣告多個常數時,省略常數值的話會使用前一個的型別和數值,以下為範例

const (
    a = 1
    b
    c = 2
    d
)
// 1 1 2 2

iota

常數計數器,可以使用 iota 初始化,它用於生成一組以相似規則初始化的常量,但是不用每行都寫一遍初始化表達式。在一個 const 聲明語句中,在第一個聲明的常量所在的行,iota 將會被置為 0,然後在每一個有常量聲明的行+1,也可自訂初始值及要加的量。

const (
    Sunday = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)
// 0 1 2 3 4 5 6 

const (
    Sunday = iota*2
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)
// 0 2 4 6 8 10 12

耶,今天就介紹到這邊,明天再來介紹Go常見的型態,以下是參考資料

參考資料

GOLANG - CONST 與關鍵字 IOTA 介紹
https://hoohoo.top/blog/golang-const-with-keyword-iota-introduction/


上一篇
Day2 - Hello world - Golang
下一篇
Day4 - 型態 - Golang
系列文
你知道Go是什麼嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言